
package org.persistente.manipula.conexao;

import java.sql.Connection;


/**
 * Interface para fontes de conexão.
 */
public abstract class FonteConexaoAbstrata {
    
	private DriverBanco driverBanco;
    private Connection conexao;
    
    
    protected void setDriverBanco(DriverBanco driverBanco) {
    	this.driverBanco = driverBanco; 
    }
    
    public DriverBanco getDriverBanco() {
    	return driverBanco;
    }
    
    /**
     * Cria uma conexão com novaConexao para ser usada por getConexao
     */
    protected void setConexao(){
        this.conexao = novaConexao();
    }
    
    /**
     * Retorna uma conexão com o banco de dados para operaçoes simples.
     * @return Conexão com o banco de dados para operaçoes simples
     */
    public Connection getConexao() {
        return conexao;
    }
    
    /**
     * Gera uma nova conex�o com o banco de dados, que precisa ser fechada.
     * @return Uma conex�o com o banco de dados para transa��o.
     * @throws br.com.nuntec.manipula.conexao.ConexaoException
     */
    public abstract Connection novaConexao() throws ConexaoException;

    @Override
    public void finalize() throws Throwable {
        ConexaoBD.fecha(conexao);
        super.finalize();
    }

}
